www.gusucode.com > VC++ 编写软件自动升级服务源代码 > VC++ 编写软件自动升级服务源代码/gusucode/updater_src0.8.1.6/Settings.cpp
/******************************************************************** created: 2005/03/02 created: 2:3:2005 13:29 filename: Settings.cpp file path: Updater file base: Settings file ext: cpp author: Geert van Horrik purpose: *********************************************************************/ //********************************************************************* // INCLUDES //********************************************************************* #include "stdafx.h" #include "Updater.h" #include "Settings.h" #include "GetOpt.h" //********************************************************************* // INITIALISATION //********************************************************************* std::auto_ptr<CSettings> CSettings::sm_inst; //********************************************************************* // CONSTRUCTOR & DESTRUCTOR //********************************************************************* CSettings::CSettings() { // Set default values for proxy username and password m_sProxyUsername = _T(""); m_sProxyPassword = _T(""); m_sSelfUpdateLocation = _T(""); m_bRestoreOlderVersion = false; } //********************************************************************* // PUBLIC FUNCTIONS //********************************************************************* CSettings * CSettings::Instance() { if(sm_inst.get() == 0) sm_inst = auto_ptr<CSettings>(new CSettings); return sm_inst.get(); /* FOLLOWING CODE WORKS ONLY IN VC7 if(sm_inst.get() == 0) sm_inst.reset(new CSettings); return sm_inst.get(); */ } //===================================================================== void CSettings::ReadFile(CString sSettingsFile) { // Parse ini file ParseIni(sSettingsFile); // Store path m_sSettingsFile = sSettingsFile; } //===================================================================== void CSettings::SaveFile(CString sSettingsFile) { // Check if settingsfile is empty if (sSettingsFile == _T("")) { // Save to stored path sSettingsFile = m_sSettingsFile; } // Read proxy type from ini-file WritePrivateProfileString(_T("PROXY"), _T("TYPE"), m_sProxyType, sSettingsFile); // Write proxy manual http from ini-file WritePrivateProfileString(_T("PROXY"), _T("HTTP"), m_sProxyManualHttp, sSettingsFile); // Write proxy manual ftp from ini-file WritePrivateProfileString(_T("PROXY"), _T("FTP"), m_sProxyManualFtp, sSettingsFile); // Write proxy auto config url from ini-file WritePrivateProfileString(_T("PROXY"), _T("AUTOCONFIGURL"), m_sProxyAutoConfigURL, sSettingsFile); } //===================================================================== CString CSettings::ParseCommandLineForSettingsFile(CString sCommand) { USES_CONVERSION; // Declare variables CGetOpt oCommandLineParsing; // Initialize command options InitializeCommandOptions(&oCommandLineParsing); // Now parse command line oCommandLineParsing.ParseCommandLine(W2A(sCommand)); // Now try to get the settings file return GetSettingsFileFromCommandLine(oCommandLineParsing); } //===================================================================== void CSettings::ParseCommandLine(CString sCommand) { USES_CONVERSION; // Declare variables CGetOpt oCommandLineParsing; // Initialize command options InitializeCommandOptions(&oCommandLineParsing); // Now parse command line oCommandLineParsing.ParseCommandLine(W2A(sCommand)); // Set parameter options SetParameterOptions(oCommandLineParsing); // Replace all instances of %username% and %password% in the update file url m_sURL = CFunctions::Instance()->ReplaceConnectionSettings(m_sURL); } //===================================================================== CString CSettings::GetLanguage() { // Return value return m_sLanguage; } void CSettings::SetLanguage(CString sValue) { // Set value m_sLanguage = sValue; } //===================================================================== CString CSettings::GetRunmode() { // Return value return m_sRunmode; } void CSettings::SetRunmode(CString sValue) { // Set value m_sRunmode = sValue; } //===================================================================== CString CSettings::GetURL() { // Return value return m_sURL; } void CSettings::SetURL(CString sValue) { // Set value m_sURL = sValue; } //===================================================================== CString CSettings::GetUpdateSelector() { // Return value return m_sUpdateSelector; } void CSettings::SetUpdateSelector(CString sValue) { // Set value m_sUpdateSelector = sValue; } //===================================================================== int CSettings::GetTimeout() { // Return value return m_iTimeout; } void CSettings::SetTimeout(int iValue) { // Set value m_iTimeout = iValue; } //===================================================================== CString CSettings::GetAppName() { // Return value return m_sAppName; } void CSettings::SetAppName(CString sValue) { // Set value m_sAppName = sValue; } //===================================================================== CString CSettings::GetAppLocation() { // Return value return m_sAppLocation; } void CSettings::SetAppLocation(CString sValue) { // Set value m_sAppLocation = sValue; } //===================================================================== CString CSettings::GetAppRoot() { // Return value return m_sAppRoot; } void CSettings::SetAppRoot(CString sValue) { // Set value m_sAppRoot = sValue; } //===================================================================== CString CSettings::GetAppVersion() { // Return value return m_sAppVersion; } void CSettings::SetAppVersion(CString sValue) { // Set value m_sAppVersion = sValue; } //===================================================================== CString CSettings::GetLogoSmall() { // Return value return m_sLogoSmall; } void CSettings::SetLogoSmall(CString sValue) { // Set value m_sLogoSmall = sValue; } //===================================================================== CString CSettings::GetLogoLarge() { // Return value return m_sLogoLarge; } void CSettings::SetLogoLarge(CString sValue) { // Set value m_sLogoLarge = sValue; } //===================================================================== CString CSettings::GetIcon() { // Return value return m_sIcon; } void CSettings::SetIcon(CString sValue) { // Set value m_sIcon = sValue; } //===================================================================== CString CSettings::GetSelfUpdateLocation() { // Return value return m_sSelfUpdateLocation; } void CSettings::SetSelfUpdateLocation(CString sValue) { // Set value m_sSelfUpdateLocation = sValue; } //===================================================================== bool CSettings::GetCheckConnection() { // Return value return m_bCheckConnection; } void CSettings::SetCheckConnection(bool bValue) { // Set value m_bCheckConnection = bValue; } //===================================================================== CString CSettings::GetFtpUsername() { // Return value return m_sFtpUsername; } void CSettings::SetFtpUsername(CString sValue) { // Set value m_sFtpUsername = sValue; } //===================================================================== CString CSettings::GetFtpPassword() { // Return value return m_sFtpPassword; } void CSettings::SetFtpPassword(CString sValue) { // Set value m_sFtpPassword = sValue; } //===================================================================== CString CSettings::GetHttpUsername() { // Return value return m_sHttpUsername; } void CSettings::SetHttpUsername(CString sValue) { // Set value m_sHttpUsername = sValue; } //===================================================================== CString CSettings::GetHttpPassword() { // Return value return m_sHttpPassword; } void CSettings::SetHttpPassword(CString sValue) { // Set value m_sHttpPassword = sValue; } //===================================================================== CString CSettings::GetProxyUsername() { // Return value return m_sProxyUsername; } void CSettings::SetProxyUsername(CString sUsername) { // Set value m_sProxyUsername = sUsername; } //===================================================================== CString CSettings::GetProxyPassword() { // Return value return m_sProxyPassword; } void CSettings::SetProxyPassword(CString sPassword) { // Set value m_sProxyPassword = sPassword; } //===================================================================== CString CSettings::GetProxyType() { // Return value return m_sProxyType; } void CSettings::SetProxyType(CString sProxyType) { // Set value m_sProxyType = sProxyType; } //===================================================================== CString CSettings::GetProxyManualHttp() { // Return value return m_sProxyManualHttp; } void CSettings::SetProxyManualHttp(CString sURL) { // Set value m_sProxyManualHttp = sURL; } //===================================================================== CString CSettings::GetProxyManualFtp() { // Return value return m_sProxyManualFtp; } void CSettings::SetProxyManualFtp(CString sURL) { // Set value m_sProxyManualFtp = sURL; } //===================================================================== CString CSettings::GetProxyAutoConfigURL() { // Return value return m_sProxyAutoConfigURL; } void CSettings::SetProxyAutoConfigURL(CString sURL) { // Set value m_sProxyAutoConfigURL = sURL; } //===================================================================== bool CSettings::GetRestoreOlderVersion() { // Return value return m_bRestoreOlderVersion; } void CSettings::SetRestoreOlderVersion(bool bValue) { // Set value m_bRestoreOlderVersion = bValue; } //===================================================================== bool CSettings::GetCustomNotify() { // Return value return m_bCustomNotify; } void CSettings::SetCustomNotify(bool bValue) { // Set value m_bCustomNotify = bValue; } //===================================================================== COLORREF CSettings::GetLinkColorLink() { // Return value return m_clrLinkColorLink; } void CSettings::SetLinkColorLink(COLORREF clrValue) { // Set value m_clrLinkColorLink = clrValue; } //===================================================================== COLORREF CSettings::GetLinkColorHover() { // Return value return m_clrLinkColorHover; } void CSettings::SetLinkColorHover(COLORREF clrValue) { // Set value m_clrLinkColorHover = clrValue; } //===================================================================== CString CSettings::GetNotifySkin() { // Return data return m_sNotifySkin; } void CSettings::SetNotifySkin(CString sValue) { // Set value m_sNotifySkin = sValue; } //===================================================================== COLORREF CSettings::GetNotifyTitleColor() { // Return data return m_clrNotifyTitleColor; } void CSettings::SetNotifyTitleColor(COLORREF clrValue) { // Set value m_clrNotifyTitleColor = clrValue; } //===================================================================== CString CSettings::GetNotifyTitleFontFace() { // Return data return m_sNotifyTitleFontFace; } void CSettings::SetNotifyTitleFontFace(CString sValue) { // Set value m_sNotifyTitleFontFace = sValue; } //===================================================================== int CSettings::GetNotifyTitleFontSize() { // Return data return m_iNotifyTitleFontSize; } void CSettings::SetNotifyTitleFontSize(int iValue) { // Set value m_iNotifyTitleFontSize = iValue; } //===================================================================== CString CSettings::GetNotifyTitleFontStyle() { // Return data return m_sNotifyTitleFontStyle; } void CSettings::SetNotifyTitleFontStyle(CString sValue) { // Set value m_sNotifyTitleFontStyle = sValue; } //===================================================================== CRect CSettings::GetNotifyTitleRect() { // Return data return m_rectNotifyTitleRect; } void CSettings::SetNotifyTitleRect(CRect oValue) { // Set value m_rectNotifyTitleRect = oValue; } //===================================================================== CRect CSettings::GetNotifyDescriptionRect() { // Return data return m_rectNotifyDescriptionRect; } void CSettings::SetNotifyDescriptionRect(CRect oValue) { // Set value m_rectNotifyDescriptionRect = oValue; } //===================================================================== CRect CSettings::GetNotifyCloseRect() { // Return data return m_rectNotifyCloseRect; } void CSettings::SetNotifyCloseRect(CRect oValue) { // Set value m_rectNotifyCloseRect = oValue; } //===================================================================== int CSettings::GetNotifySpeedFadeIn() { // Return data return m_iNotifySpeedFadeIn; } void CSettings::SetNotifySpeedFadeIn(int iValue) { // Set value m_iNotifySpeedFadeIn = iValue; } //===================================================================== int CSettings::GetNotifySpeedFadeOut() { // Return data return m_iNotifySpeedFadeOut; } void CSettings::SetNotifySpeedFadeOut(int iValue) { // Set value m_iNotifySpeedFadeOut = iValue; } //===================================================================== int CSettings::GetNotifyShowTime() { // Return data return m_iNotifyShowTime; } void CSettings::SetNotifyShowTime(int iValue) { // Set value m_iNotifyShowTime = iValue; } //===================================================================== int CSettings::GetNotifyTransparency() { // Return data return m_iNotifyTransparency; } void CSettings::SetNotifyTransparency(int iValue) { // Set value m_iNotifyTransparency = iValue; } //===================================================================== COLORREF CSettings::GetNotifyTransparentColor() { // Return data return m_clrNotifyTransparentColor; } void CSettings::SetNotifyTransparentColor(COLORREF clrValue) { // Set value m_clrNotifyTransparentColor = clrValue; } //********************************************************************* // PRIVATE FUNCTIONS //********************************************************************* void CSettings::ParseIni(CString sFilename) { USES_CONVERSION; // Declare variables CString sTemp, sLowerTemp, sBuffer; int iRed, iGreen, iBlue; CFunctions * pFunctions = CFunctions::Instance(); CPath * pPath = CPath::Instance(); // Read language from ini-file GetPrivateProfileString(_T("UPDATER"), _T("LANGUAGE"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sTemp = StringLower(sTemp.GetBuffer(sTemp.GetLength())); m_sLanguage = sTemp; // Read runmode from ini-file GetPrivateProfileString(_T("UPDATER"), _T("RUNMODE"), MODE_FULL, sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sRunmode = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read small logo from ini-file GetPrivateProfileString(_T("UPDATER"), _T("LOGOSMALL"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sLogoSmall = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); m_sLogoSmall = pPath->ConvertRelativeToFullPath(m_sLogoSmall); // Read large logo from ini-file GetPrivateProfileString(_T("UPDATER"), _T("LOGOLARGE"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sLogoLarge = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); m_sLogoLarge = pPath->ConvertRelativeToFullPath(m_sLogoLarge); // Read icon from ini-file GetPrivateProfileString(_T("UPDATER"), _T("ICON"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sIcon = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); m_sIcon = pPath->ConvertRelativeToFullPath(m_sIcon); // Read custom notifier from ini-file GetPrivateProfileString(_T("UPDATER"), _T("CUSTOMNOTIFY"), _T("false"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sTemp = StringLower(sTemp.GetBuffer(sTemp.GetLength())); m_bCustomNotify = (sTemp == _T("true")) ? true : false; // Read self update location from ini-file GetPrivateProfileString(_T("UPDATER"), _T("SELFUPDATE"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sSelfUpdateLocation = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); if (!pFunctions->IsWebAddress(m_sSelfUpdateLocation)) { m_sSelfUpdateLocation = pPath->ConvertRelativeToFullPath(m_sSelfUpdateLocation); } // Read link color - link from ini-file GetPrivateProfileString(_T("UPDATER"), _T("LINKCOLORLINK"), _T("R175,G175,B255"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseColor(sBuffer, iRed, iGreen, iBlue); m_clrLinkColorLink = RGB(iRed, iGreen, iBlue); // Read link color - hover from ini-file GetPrivateProfileString(_T("UPDATER"), _T("LINKCOLORHOVER"), _T("R0,G0,B255"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseColor(sBuffer, iRed, iGreen, iBlue); m_clrLinkColorHover = RGB(iRed, iGreen, iBlue); // Read URL from ini-file GetPrivateProfileString(_T("UPDATEINFO"), _T("URL"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sURL = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // This item can contain codes m_sURL = pPath->ReplacePathConstants(m_sURL); if (!pFunctions->IsWebAddress(m_sURL)) { m_sURL = pPath->ConvertRelativeToFullPath(m_sURL); } // Read Update Selector from ini-file GetPrivateProfileString(_T("UPDATEINFO"), _T("UPDATESELECTOR"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sUpdateSelector = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // This item can contain codes m_sUpdateSelector = pPath->ReplacePathConstants(m_sUpdateSelector); if (!pFunctions->IsWebAddress(m_sUpdateSelector)) { m_sUpdateSelector = pPath->ConvertRelativeToFullPath(m_sUpdateSelector); } // Read server timeout from ini-file GetPrivateProfileString(_T("UPDATEINFO"), _T("SERVERTIMEOUT"), _T("5000"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_iTimeout = atoi(W2A(sTemp.GetBuffer(sTemp.GetLength()))); sTemp.ReleaseBuffer(); // Read app name from in-file GetPrivateProfileString(_T("APPLICATION"), _T("NAME"), _T("Unknown app"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sAppName = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read app location from ini-file GetPrivateProfileString(_T("APPLICATION"), _T("LOCATION"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sAppLocation = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // This item can contain codes m_sAppLocation = pPath->ReplacePathConstants(m_sAppLocation); m_sAppLocation = pPath->ConvertRelativeToFullPath(m_sAppLocation); // Read app root from ini-file GetPrivateProfileString(_T("APPLICATION"), _T("ROOT"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sAppRoot = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // This item can contain codes if (m_sAppRoot.IsEmpty()) { m_sAppRoot = pPath->ExtractFilePath(m_sAppLocation); } else { m_sAppRoot = pPath->ReplacePathConstants(m_sAppRoot); m_sAppRoot = pPath->ConvertRelativeToFullPath(m_sAppRoot); } // Read app version from ini-file GetPrivateProfileString(_T("APPLICATION"), _T("VERSION"), _T("0.0.0.0"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sAppVersion = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // This item can contain codes m_sAppVersion = pPath->ReplacePathConstants(m_sAppVersion); // Check if there is a file at this point if (PathFileExists(m_sAppVersion)) { // Get value of file, and use that as version m_sAppVersion = pFunctions->GetFileVersion(m_sAppVersion); } // Read check connection from ini-file GetPrivateProfileString(_T("CONNECTION"), _T("CHECKCONNECTION"), _T("false"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sTemp = StringLower(sTemp.GetBuffer(sTemp.GetLength())); m_bCheckConnection = (sTemp == _T("true")) ? true : false; // Read ftp username from ini-file GetPrivateProfileString(_T("CONNECTION"), _T("FTPUSERNAME"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sFtpUsername = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read ftp password from ini-file GetPrivateProfileString(_T("CONNECTION"), _T("FTPPASSWORD"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sFtpPassword = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read http username from ini-file GetPrivateProfileString(_T("CONNECTION"), _T("HTTPUSERNAME"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sHttpUsername = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read http password from ini-file GetPrivateProfileString(_T("CONNECTION"), _T("HTTPPASSWORD"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sHttpPassword = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read proxy username from ini-file GetPrivateProfileString(_T("PROXY"), _T("USERNAME"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sProxyUsername = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read proxy password from ini-file GetPrivateProfileString(_T("PROXY"), _T("PASSWORD"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sProxyPassword = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read proxy type from ini-file GetPrivateProfileString(_T("PROXY"), _T("TYPE"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sTemp = StringLower(sTemp.GetBuffer(sTemp.GetLength())); m_sProxyType = sTemp; // Read proxy manual http from ini-file GetPrivateProfileString(_T("PROXY"), _T("HTTP"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sProxyManualHttp = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read proxy manual ftp from ini-file GetPrivateProfileString(_T("PROXY"), _T("FTP"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sProxyManualFtp = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read proxy auto config url from ini-file GetPrivateProfileString(_T("PROXY"), _T("AUTOCONFIGURL"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sProxyAutoConfigURL = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read skin from ini-file GetPrivateProfileString(_T("NOTIFY"), _T("SKIN"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sNotifySkin = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read title color GetPrivateProfileString(_T("NOTIFY"), _T("TITLECOLOR"), _T("R255,G255,B255"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseColor(sBuffer, iRed, iGreen, iBlue); m_clrNotifyTitleColor = RGB(iRed, iGreen, iBlue); // Read title rect GetPrivateProfileString(_T("NOTIFY"), _T("TITLERECT"), _T("0,0,0,0"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseRect(sBuffer, m_rectNotifyTitleRect); // Read description rect GetPrivateProfileString(_T("NOTIFY"), _T("DESCRIPTIONRECT"), _T("0,0,0,0"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseRect(sBuffer, m_rectNotifyDescriptionRect); // Read close rect GetPrivateProfileString(_T("NOTIFY"), _T("CLOSERECT"), _T("0,0,0,0"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseRect(sBuffer, m_rectNotifyCloseRect); // Read title font face GetPrivateProfileString(_T("NOTIFY"), _T("TITLEFONTFACE"), _T("Verdana"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sNotifyTitleFontFace = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read title font size GetPrivateProfileString(_T("NOTIFY"), _T("TITLEFONTSIZE"), _T("12"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_iNotifyTitleFontSize = atoi(W2A(sTemp.GetBuffer(sTemp.GetLength()))); sTemp.ReleaseBuffer(); // Read title font style GetPrivateProfileString(_T("NOTIFY"), _T("TITLEFONTSTYLE"), _T(""), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_sNotifyTitleFontStyle = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); // Read speed fade in GetPrivateProfileString(_T("NOTIFY"), _T("SPEEDFADEIN"), _T("10"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_iNotifySpeedFadeIn = atoi(W2A(sTemp.GetBuffer(sTemp.GetLength()))); sTemp.ReleaseBuffer(); // Read speed fade out GetPrivateProfileString(_T("NOTIFY"), _T("SPEEDFADEOUT"), _T("10"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_iNotifySpeedFadeOut = atoi(W2A(sTemp.GetBuffer(sTemp.GetLength()))); sTemp.ReleaseBuffer(); // Read show time GetPrivateProfileString(_T("NOTIFY"), _T("SHOWTIME"), _T("30"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_iNotifyShowTime = atoi(W2A(sTemp.GetBuffer(sTemp.GetLength()))); sTemp.ReleaseBuffer(); // Read transparency GetPrivateProfileString(_T("NOTIFY"), _T("TRANSPARENCY"), _T("200"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); m_iNotifyTransparency = atoi(W2A(sTemp.GetBuffer(sTemp.GetLength()))); sTemp.ReleaseBuffer(); // Read transparent color GetPrivateProfileString(_T("NOTIFY"), _T("TRANSPARENTCOLOR"), _T("R255,G0,B255"), sTemp.GetBuffer(_MAX_PATH), _MAX_PATH, sFilename); sBuffer = sTemp.GetBuffer(sTemp.GetLength()); sTemp.ReleaseBuffer(); ParseColor(sBuffer, iRed, iGreen, iBlue); m_clrNotifyTransparentColor = RGB(iRed, iGreen, iBlue); // Replace all instances of %username% and %password% in the update file url m_sURL = pFunctions->ReplaceConnectionSettings(m_sURL); } //===================================================================== void CSettings::ParseColor(CString sColor, int & iRed, int & iGreen, int & iBlue) { USES_CONVERSION; // Declare variables CString sTemp; int iBegin, iEnd, i; // Search for red iBegin = sColor.Find(_T('R'), 0); if (iBegin == -1) iRed = 255; else { iEnd = sColor.Find(_T(','), iBegin); if (iEnd == -1) iEnd = sColor.GetLength(); // Get part of string sTemp = _T(""); for (i = iBegin + 1; i < iEnd; i++) sTemp += sColor.GetAt(i); // Parse red color iRed = atoi(W2A(sTemp)); } // Search for green iBegin = sColor.Find(_T('G'), 0); if (iBegin == -1) iGreen = 255; else { iEnd = sColor.Find(_T(','), iBegin); if (iEnd == -1) iEnd = sColor.GetLength(); // Get part of string sTemp = _T(""); for (i = iBegin + 1; i < iEnd; i++) sTemp += sColor.GetAt(i); // Parse green color iGreen = atoi(W2A(sTemp)); } // Search for blue iBegin = sColor.Find(_T('B'), 0); if (iBegin == -1) iBlue = 255; else { iEnd = sColor.Find(_T(','), iBegin); if (iEnd == -1) iEnd = sColor.GetLength(); // Get part of string sTemp = _T(""); for (i = iBegin + 1; i < iEnd; i++) sTemp += sColor.GetAt(i); // Parse blue color iBlue = atoi(W2A(sTemp)); } } //===================================================================== void CSettings::ParseRect(CString sRect, CRect & rect) { USES_CONVERSION; // Declare variables CString sTemp; int iBegin, iEnd; // Set begin values iBegin = 0; // Search for values for (int i = 0; i < 4; i++) { // Search for next comma iEnd = sRect.Find(_T(','), iBegin); // Check if we found end if (iEnd == -1) iEnd = sRect.GetLength(); // Get part of string sTemp = _T(""); for (int j = iBegin; j < iEnd; j++) sTemp += sRect.GetAt(j); // Set begin for next search iBegin = iEnd + 1; // Now set value switch (i) { case 0: // Left rect.left = atoi(W2A(sTemp)); break; case 1: // Top rect.top = atoi(W2A(sTemp)); break; case 2: // Right rect.right = atoi(W2A(sTemp)); break; case 3: // Bottom rect.bottom = atoi(W2A(sTemp)); break; } } } //===================================================================== void CSettings::SetParameterOptions(CGetOpt & oCommandLineParsing) { USES_CONVERSION; // Declare variables CFunctions * pFunctions = CFunctions::Instance(); CPath * pPath = CPath::Instance(); Param oParamInfo; CString sTemp, sLowerTemp; // Loop all used parameters for (int i = 0; i < oCommandLineParsing.GetParameterResultCount(); i++) { // Get object oParamInfo = oCommandLineParsing.GetParameterResultInfo(i); // Check which parameter is used if (oParamInfo.sParameter == W2A(PARAMETER_LANGUAGE)) { m_sLanguage.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_UPDATERFILE)) { m_sURL.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_TIMEOUT)) { m_iTimeout = atoi(oParamInfo.sValue.c_str()); } if (oParamInfo.sParameter == W2A(PARAMETER_APPNAME)) { m_sAppName.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_APPVERSION)) { m_sAppVersion.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_APPLOCATION)) { m_sAppLocation.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_APPROOT)) { m_sAppRoot.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_MODE)) { m_sRunmode.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_FTPUSERNAME)) { m_sFtpUsername.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_FTPPASSWORD)) { m_sFtpPassword.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_HTTPUSERNAME)) { m_sHttpUsername.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_HTTPPASSWORD)) { m_sHttpPassword.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_CHECKCONNECTION)) { sTemp.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); sTemp = StringLower(sTemp); m_bCheckConnection = (sTemp == _T("true")) ? true : false; } if (oParamInfo.sParameter == W2A(PARAMETER_SELFUPDATE)) { m_sSelfUpdateLocation.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_UPDATESELECTOR)) { m_sUpdateSelector.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } if (oParamInfo.sParameter == W2A(PARAMETER_SETTINGSFILE)) { m_sSettingsFile.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } } } //===================================================================== CString CSettings::GetSettingsFileFromCommandLine(CGetOpt & oCommandLineParsing) { USES_CONVERSION; // Declare variables CFunctions * pFunctions = CFunctions::Instance(); Param oParamInfo; CString sFile = _T(""); // Loop all used parameters for (int i = 0; i < oCommandLineParsing.GetParameterResultCount(); i++) { // Get object oParamInfo = oCommandLineParsing.GetParameterResultInfo(i); // Check if the settings file parameter is used if (oParamInfo.sParameter == W2A(PARAMETER_SETTINGSFILE)) { sFile.Format(_T("%s"), A2W(oParamInfo.sValue.c_str())); } } // Return the file return sFile; } //===================================================================== void CSettings::InitializeCommandOptions(CGetOpt * pGetOpt) { USES_CONVERSION; // Add parameters pGetOpt->AddExpectedParameter(W2A(PARAMETER_LANGUAGE), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_UPDATERFILE), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_TIMEOUT), true, PARAMETERTYPE_INTEGER); pGetOpt->AddExpectedParameter(W2A(PARAMETER_APPNAME), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_APPVERSION), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_APPLOCATION), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_APPROOT), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_MODE), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_FTPUSERNAME), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_FTPPASSWORD), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_HTTPUSERNAME), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_HTTPPASSWORD), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_CHECKCONNECTION), true, PARAMETERTYPE_BOOL); pGetOpt->AddExpectedParameter(W2A(PARAMETER_SELFUPDATE), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_UPDATESELECTOR), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_SETTINGSFILE), true); pGetOpt->AddExpectedParameter(W2A(PARAMETER_RESTORE), false); pGetOpt->AddExpectedParameter(W2A(PARAMETER_PROXYSETTINGS), false); pGetOpt->AddExpectedParameter(W2A(PARAMETER_SERVICE), false); pGetOpt->AddExpectedParameter(W2A(PARAMETER_LOG), false); pGetOpt->AddExpectedParameter(W2A(PARAMETER_CHECKFORUPDATES), false); }